home *** CD-ROM | disk | FTP | other *** search
/ CD-ROM Today - The Disc! 5 / CD-ROM Today - The Disc (Issue 5)(November 1994).ISO / mac / Mac shareware / Education / RLaB / examples / sparse.r < prev   
Text File  |  1994-09-21  |  812b  |  56 lines

  1. //
  2. // Create and manipulate sparse matrices via RLaB lists.
  3. //
  4.  
  5. //
  6. // Given row and column indices, create a sparse matrix
  7. // structure using lists.
  8. //
  9.  
  10. make_sparse = function ( cm )
  11. {
  12.   local (i, ri, sm)
  13.  
  14.   sm = <<>>;  // Create initial list.
  15.  
  16.   ri = set (cm[;1]);  // Get a set of the row indices.
  17.   for (i in 1:ri.n)   // Create the row lists.
  18.   {
  19.     sm.[ri[i]] = <<>>;
  20.   }
  21.  
  22.   // Now load up the sparse matrix
  23.  
  24.   for (i in 1:cm.nr)
  25.   {
  26.     sm.[cm[i;1]].[cm[i;2]] = cm[i;3];
  27.   }
  28.  
  29.   return sm;
  30. };
  31.  
  32. //
  33. // Print out a sparse matrix.
  34. //
  35.  
  36. print_sparse = function ( sm )
  37. {
  38.   local (i, j);
  39.  
  40.   for (i in members (sm))
  41.   {
  42.     for (j in members (sm.[i]))
  43.     {
  44.       printf (" row: %6s\tcol: %6s\tvalue: %g\n", i, j, sm.[i].[j]);
  45.     }
  46.   }
  47. };
  48.  
  49. //
  50. // Add two sparse matrices.
  51. //
  52.  
  53. //
  54. // Multiply two sparse matrices.
  55. //
  56.